const {
  checkLoginStatus
} = require('../../utils/api.js')

Page({
  data: {
    subscribe: false,
    companyName: '123',
    access_uid: '',
    access_token: '',
    image: 'https://tdesign.gtimg.com/mobile/demos/avatar1.png',
    visible: false
  },

  onLoad() {
    const access_uid = wx.getStorageSync('access_uid');
    const access_token = wx.getStorageSync('access_token');

    if (access_uid) {
      // 头像设置
      this.setData({
        access_uid: access_uid,
        avatarUrl: '/path/to/avatar/api?uid=' + access_uid // 替换成实际的头像
      });
    } else {
      wx.showToast({
        title: '请重新登录',
        icon: 'none'
      });
    }

    // 检查登录
    this.checkUserLoginStatus()

    this.handleChange = this.debounce(this.handleChange, 1000); // 设置防抖，1000毫秒

  },

  // 检查登录
  checkUserLoginStatus() {
    const accessToken = wx.getStorageSync('access_token'); // 从本地存储获取 AccessToken
    if (accessToken) {
      checkLoginStatus(accessToken)
        .then((result) => {
          if (result.valid) {
            this.setData({
              isLoggedIn: true
            }); // 用户已登录
          } else {
            this.setData({
              isLoggedIn: false,
              message: result.message
            }); // 用户未登录
            wx.showModal({
              title: '提示',
              content: result.message,
              confirmText: '登录失效，请重新登录',
              success: (res) => {
                if (res.confirm) {
                  wx.navigateTo({
                    url: '/pages/login/login', // 跳转到登录页面
                  });
                }
              }
            });
          }
        })
        .catch((error) => {
          console.error('检查登录状态失败:', error);
          wx.showToast({
            title: '检查登录状态失败',
            icon: 'none'
          });
        });
    } else {
      this.setData({
        isLoggedIn: false,
        message: '未登录'
      });
      wx.showModal({
        title: '提示',
        content: '您尚未登录，请前往登录页面。',
        confirmText: '确认',
        success: (res) => {
          if (res.confirm) {
            wx.navigateTo({
              url: '/pages/login/login', // 跳转到登录页面
            });
          }
        }
      });
    }
  },


  // 订阅消息
  handleChange(e) {
    const {
      value
    } = e.detail; // 获取开关的状态
    const tmplIds = ["your_template_id_1", "your_template_id_2"]; // 替换为实际模板 ID

    // 如果正在请求中，直接返回
    if (this.data.isRequesting) {
      return;
    }

    // 设置为请求中状态
    this.setData({
      isRequesting: true,
    });

    // 设置 loading
    wx.showLoading({
      title: '正在更新订阅...',
      mask: true,
    });

    wx.getStorage({
      key: 'access_token',
      success: (res) => {
        const accessToken = res.data;

        wx.request({
          url: 'https://developer.qlist.cn/idrm/wxapi/delivery/subscriber',
          method: 'POST',
          header: {
            'Content-Type': 'application/json',
            'Authorization': `Bearer ${accessToken}`,
          },
          data: {
            tmplIds: tmplIds
          },
          success: (response) => {
            wx.hideLoading(); // 隐藏 loading
            // 设置请求结束状态
            this.setData({
              isRequesting: false
            });

            if (response.data.code === 0) {
              // 更新 subscribe 的值以反映状态
              this.setData({
                subscribe: value
              });

              const message = value ? '成功开启订阅' : '订阅已关闭';
              wx.showToast({
                title: message,
                icon: 'success',
              });
            } else {
              wx.showToast({
                title: '操作失败: ' + response.data.message,
                icon: 'none',
              });
            }
          },
          fail: (err) => {
            wx.hideLoading(); // 隐藏 loading
            // 设置请求结束状态
            this.setData({
              isRequesting: false
            });

            wx.showToast({
              title: '请求失败',
              icon: 'none',
            });
            console.error('请求失败：', err);
          },
        });
      },
      fail: () => {
        wx.hideLoading(); // 隐藏 loading
        // 设置请求结束状态
        this.setData({
          isRequesting: false
        });

        wx.showToast({
          title: '获取 Access Token 失败',
          icon: 'none',
        });
      }
    });
  },

  debounce(func, delay) {
    let timer = null;
    return function (...args) {
      if (timer) {
        clearTimeout(timer);
      }
      timer = setTimeout(() => {
        func.apply(this, args);
      }, delay);
    };
  },






  handleOverlayClick(e) {
    this.setData({
      visible: e.detail.visible,
    });
  },

  // 去编辑页面
  navigateToTargetPage() {
    wx.navigateTo({
      url: '/pages/edit/edit' // 目标页面路径
    });
  },

  // 去设置页面
  navigateToTarSetUp() {
    wx.navigateTo({
      url: '/pages/setUp/setUp' // 目标页面路径
    });
  },



  // 监听点击事件，弹出模态对话框让用户修改企业名称
  onEditTitle() {
    const that = this;
    wx.showModal({
      title: '修改企业名称',
      content: '请输入新的企业名称',
      editable: true, // 设置对话框为可编辑状态
      placeholderText: '请输入企业名称',
      success(res) {
        if (res.confirm) {
          // 用户点击确认，保存新的企业名称
          that.setData({
            companyName: res.content || that.data.companyName // 如果用户未输入则保留原有名称
          });
          wx.showToast({
            title: '企业名称修改成功',
            icon: 'success'
          });
        }
      }
    });
  },
});